package net.towee.client.com.lobby;

import net.towee.client.com.lobby.presenter.LobbyGroupsCreator;
import net.towee.client.com.lobby.presenter.LobbyGroupsFinder;
import net.towee.client.com.lobby.presenter.LobbyGroupsPresenter;
import net.towee.client.com.lobby.presenter.LobbyNicknamePresenter;
import net.towee.client.com.lobby.presenter.LobbyPeoplePresenter;
import net.towee.client.com.lobby.presenter.LobbyPresenter;
import net.towee.client.com.lobby.presenter.LobbyProfilePresenter;
import net.towee.client.com.lobby.view.LobbyGroupsCreatorView;
import net.towee.client.com.lobby.view.LobbyGroupsFinderView;
import net.towee.client.com.lobby.view.LobbyGroupsView;
import net.towee.client.com.lobby.view.LobbyNicknameView;
import net.towee.client.com.lobby.view.LobbyPeopleView;
import net.towee.client.com.lobby.view.LobbyProfileView;
import net.towee.client.com.lobby.view.LobbyView;

import com.google.gwt.inject.client.AbstractGinModule;
import com.google.inject.Singleton;

/**
 * Module for binding Lobby component
 * 
 * @author c58
 */
public class LobbyModule extends AbstractGinModule  {

	@Override
	protected void configure() {
		// Lobby main window
		bind(Lobby.class).to(LobbyPresenter.class).in(Singleton.class);
		bind(LobbyPresenter.Display.class).to(LobbyView.class).in(Singleton.class);
		
		// Lobby steps
		bind(LobbyNicknamePresenter.class).in(Singleton.class);
		bind(LobbyNicknamePresenter.Display.class).to(LobbyNicknameView.class).in(Singleton.class);
		
		bind(LobbyProfilePresenter.class).in(Singleton.class);
		bind(LobbyProfilePresenter.Display.class).to(LobbyProfileView.class).in(Singleton.class);
		
		bind(LobbyGroupsPresenter.class).in(Singleton.class);
		bind(LobbyGroupsPresenter.Display.class).to(LobbyGroupsView.class).in(Singleton.class);
		bind(LobbyGroupsFinder.class).in(Singleton.class);
		bind(LobbyGroupsFinderView.class).in(Singleton.class);
		bind(LobbyGroupsCreator.class).in(Singleton.class);
		bind(LobbyGroupsCreatorView.class).in(Singleton.class);
		
		bind(LobbyPeoplePresenter.class).in(Singleton.class);
		bind(LobbyPeoplePresenter.Display.class).to(LobbyPeopleView.class).in(Singleton.class);
	}

}
